/* Copyright 2013 University of Padua, Italy
 *
 */

package it.dei.unipd.healthservice.database;

import it.dei.unipd.healthservice.resource.Prodotto;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 * Rappresenta i dettagli di un ordine.
 * 
 * @author Nichele Dany
 * @version 1.00
 */
public class ViewProdottiOrdineDatabase {

	/**
	 * Interrogazione al database.
	 */
	private static final String STATEMENT = "SELECT * FROM Prodotto INNER JOIN Appartiene "+
			 "ON Prodotto.idprodotto = Appartiene.idprodotto WHERE Appartiene.idordine = ?";

	/**
	 * Connessione al database
	 */
	private final Connection con;

	/**
	 * id ordine
	 */
	private final int idordine;

	/**
	 * Risultati della ricerca
	 */
	private final List<Prodotto> prodotti;

	/**
	 * cerca tutti i prodotti relativi ad un ordine
	 * 
	 * @param con
	 *            connessione al database.
	 * @param mail
	 *            mail del cliente
	 */
	public ViewProdottiOrdineDatabase(Connection con, int idordine) {
		this.con = con;
		this.idordine = idordine;
		prodotti = new ArrayList<Prodotto>();
	}

	/**
	 * cerca tutti i prodotti relativi ad un ordine
	 * 
	 * @return lista dei prodotti.
	 * 
	 * @throws SQLException
	 *             in caso di problemi nell'accesso al database.
	 */
	public List<Prodotto> viewProdottiOrdine() throws SQLException {

		PreparedStatement pstmt = null;
		ResultSet rs = null;

		try {
			pstmt = con.prepareStatement(STATEMENT);
			pstmt.setInt(1, idordine);

			rs = pstmt.executeQuery();

			while (rs.next()) {
				prodotti.add(new Prodotto(rs.getInt("idprodotto"),
						rs.getString("nome"),
						rs.getString("immagine"),
						rs.getBoolean("arichiesta"),
						rs.getFloat("prezzo"), 
						rs.getString("descrizione"),
						rs.getString("categoria_nome"),
						rs.getBoolean("invendita"))); 
			}
		} finally {
			if (rs != null) {
				rs.close();
			}

			if (pstmt != null) {
				pstmt.close();
			}

			con.close();
		}

		return prodotti;
	}
}
